#ifndef NANE_WINDOW_H
#   define  NANE_WINDOW_H

#   include "nane/core/SubSystemProduct.h"
#   include "nane/WindowSystem/IWindowSystem.h"

namespace nane 
{
    class Window
        : public SubSystemProduct
    {
        class Implementation;
        friend class WindowSystem;

    public:
        Window( const NullType& = NullPtr );
        Window( Implementation* _impl );
        Window( const Window& _other );

    public:
        IWindow::OSHandle GetOSHandle();
        void Show();
        void UpdateMessages();
        void SetMessageHandler( IWindowMessageHandler* _handler );
        
    private:
        Implementation* m;
    };
}   // namespace nane

#endif	// NANE_WINDOW_H
